package 二叉树;

import Utils.TreeNode;

/**
 * @author: TTDB
 * @create: 2025/9/17
 */
public class kthSmallest {
    // 二叉搜索树中第k小的元素，二叉搜索树中序遍历是升序的
        public int kthSmallest(TreeNode root, int k) {
            // 利用 BST 的中序遍历特性
            traverse(root, k);
            return res;
        }

        // 记录结果
        int res = 0;
        // 记录当前元素的排名
        int rank = 0;
        void traverse(TreeNode root, int k) {
            if (root == null) {
                return;
            }
            traverse(root.left, k);
            // 中序代码位置
            rank++;
            if (k == rank) {
                // 找到第 k 小的元素
                res = root.val;
                return;
            }

            traverse(root.right, k);
        }
}
